package com.xgq.drink.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.xgq.drink.entity.DiscountClaim;
import com.baomidou.mybatisplus.core.metadata.IPage;

public interface IDiscountClaimService extends IService<DiscountClaim> {
    /**
     * 分页查询用户的所有优惠券
     * @param userId 用户ID
     * @param discountType 优惠券类型（会员、店铺、官方、专属商品）
     * @param status 优惠券状态（1: 待使用, 2: 已使用, 3: 已失效）
     * @param current 当前页码
     * @param size 每页大小
     * @return 分页结果
     */
    IPage<DiscountClaim> getDiscountClaimsByUserId(Long userId, String discountType, Integer status, int current, int size);

    /**
     * 将优惠券状态设置为“已使用”
     * @param claimId 优惠券领取记录ID
     */
    void markAsUsed(Long claimId);

    /**
     * 将优惠券状态设置为“已失效”
     * @param claimId 优惠券领取记录ID
     */
    void markAsExpired(Long claimId);

    /**
     * 用户领取优惠券
     * @param userId 用户ID
     * @param discountId 优惠券ID
     * @return 领取的优惠券记录
     */
    DiscountClaim claimDiscount(Long userId, Long discountId);
}